home *** CD-ROM | disk | FTP | other *** search
- .text
- .sdreg r2
- .align 2
- .global _RealStr
- _RealStr:
- ###############################################################################
- # name offset
- # __local 0
- # buf 4
- # neg 28
- # rest 32
- # top 36
- # d 40
- # args ###########################
- # str 48
- # f 52
- # n 60
- mflr r0
- stw r0,8(r1)
- stwu r1,-92(r1)
- stw r13,24(r1)
- mr r13,r1
- stw r3,48+28(r13)
- stfd f1,52+28(r13)
- stw r4,60+28(r13)
- lwz r0,RealStr_laddr(r2)
- stw r0,0+28(r13)
- # DEFL top,rest,neg=FALSE
- li r3,0
- stw r3,28+28(r13)
- # IF f<0 THEN neg:=TRUE
- if0:
- lfd f1,52+28(r13)
- lfd f2,n0(r2)
- fcmpo 0,f1,f2
- blt $+12
- li r3,0
- b $+8
- li r3,-1
- mr. r3,r3
- beq end0
- # IF f<0 THEN neg:=TRUE
- li r3,-1
- stw r3,28+28(r13)
- end0:
- # d:=FAbs(f)
- lfd f1,52+28(r13)
- fabs f1,f1 # FAbs
- stfd f1,40+28(r13)
- # top:=d
- lfd f0,40+28(r13)
- fctiw f0,f0
- stfd f0,-8(r1)
- lwz r3,-4(r1)
- stw r3,36+28(r13)
- # d-=top
- lfd f1,40+28(r13)
- lwz r3,36+28(r13)
- lis r0,17200
- stw r0,-8(r1)
- xoris r0,r3,0x8000
- stw r0,-4(r1)
- lfd f0,-8(r1)
- lfd f2,conv(r2)
- fsub f2,f0,f2
- fsub f1,f1,f2
- stfd f1,40+28(r13)
- # top--
- if2:
- lfd f1,40+28(r13)
- lfd f2,n1(r2)
- fcmpo 0,f1,f2
- blt $+12
- li r3,0
- b $+8
- li r3,-1
- mr. r3,r3
- beq end2
- # top--
- lwz r3,36+28(r13)
- subi r3,r3,1
- stw r3,36+28(r13)
- # d++
- lfd f1,40+28(r13)
- lfd f2,n2(r2)
- fadd f1,f1,f2
- stfd f1,40+28(r13)
- end2:
- # d*=1000000000
- lfd f1,40+28(r13)
- lfd f2,n3(r2)
- fmul f1,f1,f2
- stfd f1,40+28(r13)
- # rest:=d
- lfd f0,40+28(r13)
- fctiw f0,f0
- stfd f0,-8(r1)
- lwz r3,-4(r1)
- stw r3,32+28(r13)
- # IF f<0 THEN top:=-top
- if4:
- lfd f1,52+28(r13)
- lfd f2,n4(r2)
- fcmpo 0,f1,f2
- blt $+12
- li r3,0
- b $+8
- li r3,-1
- mr. r3,r3
- beq end4
- # IF f<0 THEN top:=-top
- lwz r3,36+28(r13)
- neg r3,r3
- stw r3,36+28(r13)
- end4:
- # StringF(buf,'\s\d.\z\r\d[9]',IF neg THEN '-' ELSE NIL,Abs(top),rest)
- subi r1,r1,12
- addi r3,r13,4+28
- stw r3,0+24(r1)
- lwz r3,@_str0(r2)
- stw r3,4+24(r1)
- subi r1,r1,12
- if6:
- lwz r0,28+28(r13)
- mr. r0,r0
- beq elseif6_1
- lwz r3,@_str1(r2)
- stw r3,0+24(r1)
- b end6
- elseif6_1:
- li r3,0
- stw r3,0+24(r1)
- end6:
- lwz r3,36+28(r13)
- bl _Abs # Abs
- stw r3,4+24(r1)
- lwz r3,32+28(r13)
- stw r3,8+24(r1)
- lwz r3,0+28(r13)
- addi r3,r3,0
- lwz r4,0+24(r1)
- stw r4,0(r3)
- lwz r4,4+24(r1)
- stw r4,4(r3)
- lwz r4,8+24(r1)
- stw r4,8(r3)
- addi r1,r1,12
- stw r3,8+24(r1)
- lwz r3,24(r1)
- addi r1,r1,4
- lwz r4,24(r1)
- addi r1,r1,4
- lwz r5,24(r1)
- addi r1,r1,4
- bl _StringF # StringF
- # StrCopy(str,buf,StrLen(buf)-9+n)
- lwz r3,48+28(r13)
- addi r4,r13,4+28
- stw r4,20(r1)
- stw r3,16(r1)
- subi r1,r1,8
- addi r3,r13,4+28
- bl _StrLen # StrLen
- mr r5,r3
- lwz r3,24(r1)
- lwz r4,28(r1)
- addi r1,r1,8
- subi r5,r5,9
- lwz r6,60+28(r13)
- add r5,r5,r6
- bl _StrCopy # StrCopy
- RealStrend:
- lwz r3,48+28(r13)
- RealStrfinish:
- lwz r13,24(r1)
- addi r1,r1,92
- lwz r0,8(r1)
- mtlr r0
- blr
-
- .global _RealStr
- .type _RealStr,2
- .size _RealStr,$-_RealStr
- RealStr_local:
- RealStr_list0:
- .ualong 0
- .ualong 0
- .ualong 0
- .align 2
- .global _StrCopy
- .global _StringF
- .global _StrLen
- .global _Abs
- .global _FAbs
- .tocd
- .global RealStr_laddr
- RealStr_laddr: .long RealStr_local
- .extern _stdrast_coloura
- .extern _stdrast
- .extern _exceptioninfo
- .extern _exception
- .extern _wbmessage
- .extern _PowerPCBase
- .extern _stdin
- .extern _stdout
- .extern _arg
- .extern _GfxBase
- .extern _IntuitionBase
- .extern _DOSBase
- .extern _ExecBase
- .data
- n0: .long 0x0 ,0x0
- .set n1,n0
- n2: .long 0x3FF00000,0x0
- n3: .long 0x41CDCD65,0x0
- .set n4,n1
- conv: .long 0x43300000,0x80000000
- .extern @_str0
- .global str0
- str0: .byte "%s%ld.%09.9ld",0
- .extern @_str1
- .global str1
- str1: .byte "-",0
-